package br.ufpe.abaco.ParserGen.parser;

/**
 *  Esta classe serve para definir acoes semanticas para producoes da gramatica.
 *  Tais acoes sao realizadas durante a analise sintatica (apos um reduce).
 *  Exemplo de utilizacao: > Production prod = new Production(left, right); > >
 *  prod.setAction( new SemanticAction { > Object act(Object[]) { > <acao
 *  semantica> > } > });
 *
 *@author     Monique Monteiro e Pablo Sampaio
 *@created    30 de Outubro de 2002
 */
public interface SemanticAction  extends java.io.Serializable {

    /**
     *  Este metodo representa a acao semantica associada a producao. O array de
     *  entrada representa os valores dos simbolos a direita da producao. O
     *  valor de retorno eh um objeto de uma classe que represente o
     *  nao-terminal do lado direito da producao. Possivelmente esse valor sera
     *  um no de uma arvore sintatica.
     *
     *@param  values  Description of the Parameter
     *@return         Description of the Return Value
     */
    public Object act(Object[] values);

}
